package main

import (
	"fmt"
	"net"
	"strings"
)

func main() {
	//创建监听
	ip := "127.0.0.1"
	port := 8848
	//func Listen(network string, address string) (Listener, error)
	address := fmt.Sprintf("%s:%d", ip, port)
	listener, err := net.Listen("tcp", address)
	//net.Listen("tcp", ":8848")//简写，冒号前面默认时本机：127.0.0.1

	if err != nil {
		fmt.Println("net.Listen err", err)
		return
	}
	//func (Listener) Accept() (Conn, error)
	fmt.Println("监听中......")
	conn, err := listener.Accept()
	if err != nil {
		fmt.Println("listener.Accept err", err)
		return
	}
	fmt.Println("连接建立成功！")
	//创建一个容器，用于接收读取到的数据
	buf := make([]byte, 1024) //使用make来创建切片，byte==》uint8

	//Read(b []byte) (n int, err error)
	//cnt:真正读取client发来的数据长度
	cnt, err := conn.Read(buf)
	if err != nil {
		fmt.Println("conn.Read err", err)
		return
	}
	fmt.Println("Client=========>server,长度：", cnt, ",数据：", string(buf))
	//服务器对客户端请求镜像响应
	//将数据转成大写"hello"==》HELLO
	//func ToUpper(s string) string
	upperData := strings.ToUpper(string(buf))
	//Write(b []byte) (n int, err error)
	conn.Write([]byte(upperData))
	fmt.Println("Client<=====Server,长度：", cnt, ",数据:", upperData)

	//关闭连接
	conn.Close()

}
